docs(wiki): digest mdl/visitor — two new pages and the first re-sync - #360
Merged
Merged
Conversation
27 of the 28 mdl/visitor findings (96%). Two pages are new and one is a re-sync — the first any page has had since the initial synthesis on 2026-05-24. - expression-translation-drift (13). Deliberately distinct from platform-semantics-gaps: there the MDL is illegal Mendix, here the MDL is correct, the emitted Mendix expression is well-formed, and it says something else. The worst instance is the quietest — an additive chain rebuilt with its operators reordered, so a microflow computed a different number than its source said with mxcli check, mx check and the build all green, and the corruption in the stored document rather than in DESCRIBE. Three ways meaning is lost (a literal changes type, an operator changes, a function resolves to the wrong overload), plus the ANTLR trap behind the standard fix: GetText() excludes hidden tokens and a source-interval slice includes them, so preserving raw source inherits every comment in that span. - misleading-diagnostics (6). Graded above "the message could be clearer" because a wrong hint costs however long the reader spends acting on it: they blamed their quoting, renamed an attribute that was fine, or concluded a construct was unsupported. A hint's precision matters more than its coverage — the "unescaped apostrophe" hint matched any short lowercase word and so fired on every genuine error at `on`, `in`, `as`, `to`, `by`. - visitor-wiring-gaps — RE-SYNCED. It described one size of gap (a field); the findings show three. A field, a structure (ELSIF arms, which Mendix has no native form for and which must be lowered into nested ifs), and a whole statement that parses, exits 0 and dispatches to nothing — the last presenting as an empty result rather than a missing feature, which is what lets it survive. Added the neighbouring failure where a field is wired to the WRONG thing, which reports success and changes meaning rather than losing it. Every sources: path and every [[wiki-link]] across all 25 pages verified to resolve. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #359. The whole chain — #356 → #357 → #358 → #359 → this — is still open against a
mainthat has moved on; they want landing in order.27 of the 28
mdl/visitorfindings (96%). Two new pages, and one re-sync — the first any wiki page has had since the initial synthesis on 2026-05-24, which was the point of building the trigger.expression-translation-drift
Deliberately kept distinct from
platform-semantics-gaps. There, the MDL is illegal Mendix. Here the MDL is correct, the emitted Mendix expression is well-formed, and it says something else.The worst instance is the quietest: an additive chain rebuilt with its operators reordered, so a microflow computed a different number than its source said —
mxcli check,mx checkand the build all green, and the corruption in the stored document rather than in the description. Nothing downstream can catch it, because the output is a valid expression;stringson the.mxunitis what showed the swap.Three ways meaning is lost — a literal changes type, an operator changes (
/is division in most languages and member navigation in Mendix), a function resolves to the wrong overload (contains/findexist as both string functions and list operations). Plus the ANTLR trap behind the standard fix:GetText()excludes hidden tokens and a source-interval slice includes them, so preserving raw source inherits every comment in that span — which is how a--comment ended up inside a Mendix expression.misleading-diagnostics
Graded above "the message could be clearer", because a missing hint costs a minute and a wrong one costs however long the reader spends acting on it. In the reported cases they blamed their quoting, renamed an attribute that was fine, or concluded a construct was unsupported.
A hint's precision matters more than its coverage: the "unescaped apostrophe" hint matched any short lowercase word, so it fired on every genuine parse error at
on,in,as,to,by. And key the hint off the source line, not the parser message — a misplacedindexclause errors on the index name, so the message never contains the wordindexand no message-matching hint can fire.The re-sync
visitor-wiring-gapsdescribed one size of gap. The findings show three:OR REPLACEflag lost;ELSIFarms dropped, because Mendix has no nativeelsifand each arm must be lowered into a nestedif;Also added: the neighbouring failure where a field is wired to the wrong thing — a delete-behaviour keyword storing a different behaviour, a dollar-quoted SQL body overwritten by a parameter default. Those report success and change the model's meaning, where an unwired field merely loses it.
sources:narrowed from the findings directory to the specific shard,last-syncedrefreshed, wiki-links normalised.The digest, complete for the five largest areas
mdl/executorcmd/mxclimdl/backendmdl/grammarmdl/visitor25 pattern pages, up from 3. Every
sources:path and every[[wiki-link]]across all of them verified to resolve.🤖 Generated with Claude Code